home *** CD-ROM | disk | FTP | other *** search
File List | 1992-09-03 | 8.8 KB | 396 lines |
- ' ******************************************************************************
- ' *********** Programmers Pak v1.0 by Harry Sarber ****************
- ' ********************* Started: 02/28/1992 ****************************
- ' ******************************************************************************
- '
- $m4096
- '
- start
- '
- ' *** Setup for Accessory or Program ***
- PROCEDURE start
- v_rez&=CARD{L~A-4}
- h_rez&=CARD{L~A-12}
- IF v_rez&>200
- xf=1
- yf%=2
- rez%=2
- rsrc$="PROGPKHI.RSC"
- tx%=27
- ty%=5
- ELSE
- xf=1
- yf%=1
- rez%=1
- rsrc$="PROGPK10.RSC"
- tx%=27
- ty%=5
- ENDIF
- IF h_rez&<=320
- xf=0.5
- rez%=0
- tx%=7
- ty%=5
- ELSE
- xf=1
- ENDIF
- ap_id&=APPL_INIT()
- IF ap_id&
- me_id&=MENU_REGISTER(ap_id&," Prog Pak v1.0")
- IF EXIST(rsrc$)
- init
- DO
- ~EVNT_MESAG(0)
- IF MENU(1)=40
- doit
- gone
- ENDIF
- LOOP
- ELSE
- rsc_missing
- ENDIF
- ELSE
- IF EXIST(rsrc$)
- init
- doit
- gone
- ELSE
- rsc_missing
- ENDIF
- ENDIF
- RETURN
- ' *** Initialize ***
- PROCEDURE init
- ON ERROR GOSUB error
- ON BREAK CONT
- last_rev_date$="09/02/92"
- version$="1.0"
- ' Credits
- PRINT AT(tx%,ty%);CHR$(27)+"p* * * * * * * * * * * * *"
- PRINT AT(tx%,ty%+1);"* Programmers Pak v";version$;" *"
- PRINT AT(tx%,ty%+2);"* by Harry Sarber *"
- PRINT AT(tx%,ty%+3);"* ";last_rev_date$;" *"
- PRINT AT(tx%,ty%+4);"* * * * * * * * * * * * *"
- PRINT CHR$(27)+"q"
- PAUSE 100
- DEFMOUSE 0
- ' Set resource constants
- LET progpak&=0 !RSC_TREE
- LET ascii&=3 !Obj in #0
- LET keycodes&=4 !Obj in #0
- LET patterns&=5 !Obj in #0
- LET textstyl&=6 !Obj in #0
- LET linestyl&=7 !Obj in #0
- LET markers&=8 !Obj in #0
- LET exitpak&=10 !Obj in #0
- ' Load resource file
- ~RSRC_FREE()
- ~RSRC_LOAD(rsrc$)
- ~RSRC_GADDR(0,progpak&,tree_add1%)
- ' Pattern array
- DIM patterns(36,2)
- FOR i%=0 TO 23
- IF i%<12
- patterns(i%+24,0)=3
- patterns(i%+24,1)=i%+1
- ENDIF
- patterns(i%,0)=2
- patterns(i%,1)=i%+1
- NEXT i%
- ' Text size array
- DIM textsizes(6)
- RESTORE textsizes
- FOR i%=0 TO 5
- READ textsizes(i%)
- NEXT i%
- textsizes:
- DATA 6,10,12,18,24,32
- ' Marker array
- DIM x%(1)
- DIM y%(1)
- ' ASCII codes array
- DIM concodes$(33)
- RESTORE concodes
- FOR i%=0 TO 32
- READ concodes$(i%)
- NEXT i%
- concodes:
- DATA NUL,none,none,none,none,none,none,BELL,BS,HT,LF,VT,FF,CR,SO,SI,none
- DATA DC1,DC2,DC3,DC4,none,none,none,CAN,EM,none,ESC,none,none,none,none,SPACE
- RETURN
- ' *** Main Routine ***
- PROCEDURE doit
- HIDEM
- TITLEW #1," Programmers Pak v"+version$+" "
- OPENW #1,0,11*yf%,h_rez&-1,188*yf%,1
- DEFTEXT 1,0,,6
- CLEARW #1
- restart:
- REPEAT
- CLEARW #1
- DEFMOUSE 0
- ~FORM_CENTER(tree_add1%,x%,y%,w%,h%)
- ~OBJC_DRAW(tree_add1%,0,5,x%,y%,w%,h%)
- SHOWM
- REPEAT
- UNTIL MOUSEK=0
- pp%=FORM_DO(tree_add1%,0)
- IF pp%=patterns&
- @patterns
- ELSE IF pp%=textstyl&
- @textstyles
- ELSE IF pp%=linestyl&
- @linestyles
- ELSE IF pp%=markers&
- @markers
- ELSE IF pp%=keycodes&
- @keycodes
- ELSE IF pp%=ascii&
- @ascii
- ENDIF
- TITLEW #1," Programmers Pak v"+version$+" "
- ~OBJC_CHANGE(tree_add1%,pp%,0,x%,y%,w%,h%,0,0)
- UNTIL pp%=exitpak&
- ~OBJC_CHANGE(tree_add1%,pp%,0,x%,y%,w%,h%,0,0)
- RETURN
- ' *** Exit Program ***
- PROCEDURE gone
- CLEARW #1
- CLOSEW #1
- ~RSRC_FREE()
- RETURN
- ' *** Patterns Utility ***
- PROCEDURE patterns
- CLEARW #1
- TITLEW #1," Patterns "
- DEFLINE 1,1,0,0
- HIDEM
- p1=2
- p2=1
- FOR y=1 TO 6
- FOR x=1 TO 6
- xpos=(x-1)*106
- ypos=(y-1)*24
- RBOX (xpos+4)*xf,(ypos+2)*yf%,(xpos+98)*xf,(ypos+14)*yf%
- DEFFILL 1,p1,p2
- FILL (xpos+10)*xf,(ypos+10)*yf%
- PRINT AT(((xpos*xf)/8)+(6*xf),(((ypos)/8)+3)*yf%);p1;",";p2;
- p2=p2+1
- IF p2=25
- p1=3
- p2=1
- ENDIF
- NEXT x
- NEXT y
- PRINT
- PRINT
- PRINT "Press right button or any key...";
- wait
- TITLEW #1," Programmers Pak "
- SHOWM
- RETURN
- ' *** Text styles and sizes Utility ***
- PROCEDURE textstyles
- CLEARW #1
- TITLEW #1," Text Styles "
- DEFTEXT 1,0,,6
- TEXT 2*xf,20*yf%,"Style"+CHR$(3)
- TEXT 2*xf,30*yf%,"Height"
- TEXT 108*xf,20*yf%,"0"
- TEXT 40*xf,40*yf%,"6"
- IF rez%=0
- TEXT 108*xf,40*yf%,"A"
- ELSE
- TEXT 108*xf,40*yf%,"ABC"
- ENDIF
- DEFTEXT 1,0,,13
- TEXT 34*xf,60*yf%,"13"
- IF rez%=0
- TEXT 108*xf,60*yf%,"A"
- ELSE
- TEXT 108*xf,60*yf%,"ABC"
- ENDIF
- DEFTEXT 1,0,,32
- TEXT 26*xf,90*yf%,"32"
- IF rez%=0
- TEXT 108*xf,90*yf%,"A"
- ELSE
- TEXT 108*xf,90*yf%,"ABC"
- ENDIF
- DEFTEXT 1,0,,6
- FOR i%=0 TO 5
- DEFTEXT 1,0,,6
- TEXT (i%*70+176)*xf,20*yf%,STR$(2^i%)
- DEFTEXT 1,2^i%,,6
- IF rez%=0
- TEXT (i%*70+186)*xf,40*yf%,"A"
- ELSE
- TEXT (i%*70+186)*xf,40*yf%,"ABC"
- ENDIF
- DEFTEXT 1,2^i%,,13
- IF rez%=0
- TEXT (i%*70+186)*xf,60*yf%,"A"
- ELSE
- TEXT (i%*70+186)*xf,60*yf%,"ABC"
- ENDIF
- DEFTEXT 1,2^i%,,32
- IF rez%=0
- TEXT (i%*70+186)*xf,90*yf%,"A"
- ELSE
- TEXT (i%*70+186)*xf,90*yf%,"ABC"
- ENDIF
- NEXT i%
- DEFTEXT 1,0,,6
- TEXT 20*xf,130*yf%,"Press right button or any key..."
- wait
- RETURN
- ' *** Line styles utility ***
- PROCEDURE linestyles
- CLEARW #1
- TITLEW #1," Line Styles "
- DEFTEXT 1,0,,6
- TEXT 20*xf,10*yf%,"Styles"
- FOR e=1 TO 6
- DEFLINE e,,0,0
- TEXT 40,((e-1)*26+19)*yf%,STR$(e)
- LINE 100*xf,((e-1)*26+17)*yf%,250*xf,((e-1)*26+17)*yf%
- NEXT e
- TEXT 270*xf,10*yf%,"Widths"
- DEFLINE 1,1,1,2
- FOR e=1 TO 11 STEP 2
- DEFLINE ,e
- TEXT 290*xf,(e*13+6)*yf%,STR$(e)
- LINE 350*xf,(e*13+4)*yf%,500*xf,(e*13+4)*yf%
- NEXT e
- TEXT 20*xf,170*yf%,"Press right button or any key..."
- wait
- DEFLINE 1,1,0,0
- RETURN
- ' *** Markers ***
- PROCEDURE markers
- CLEARW #1
- TITLEW #1," Markers "
- DEFTEXT 1,0,,6
- TEXT 20*xf,14*yf%,"Style "+CHR$(3)
- x%(0)=0
- y%(0)=0
- FOR i%=1 TO 6
- TEXT (i%*80+96)*xf,14*yf%,STR$(i%)
- FOR j%=1 TO 12
- DEFMARK 1,i%,j%
- POLYMARK 1,x%(),y%() OFFSET (i%*80+100)*xf,(j%*10+24)*yf%
- NEXT j%
- NEXT i%
- TEXT 20*xf,170*yf%,"Press right button or any key..."
- wait
- RETURN
- ' *** Key Codes Utility ***
- PROCEDURE keycodes
- LOCAL bt,a$
- exit_keycodes!=FALSE
- CLEARW #1
- title$=" 8/16 bit Key Scan codes "
- TITLEW #1,title$
- HIDEM
- PRINT AT(1,1)
- PRINT " Press any key to find the Key Code"
- PRINT " Press Escape to Exit"
- d=0
- REPEAT
- event=EVNT_MULTI(&X110001,d,d,d,d,d,d,d,d,d,d,d,d,d,adr_mes%,2000,d,d,d,keystate,keycode,d)
- '
- IF (event AND &X1) ! MU_KEYBD
- code=(keycode AND 255)
- CLEARW #1
- PRINT AT(1,1)
- IF code<>27
- PRINT AT(2,5);" KEY IS : "+CHR$(code)
- ELSE
- PRINT AT(2,5);" KEY IS : "
- ENDIF
- PRINT AT(2,7);" 16 bit Key Scan code is : "+STR$(keycode)+" "
- PRINT AT(2,8);" 8 bit Key Scan code is : "+STR$(code)+" "
- PRINT AT(2,9);" Contrl/Shift/Alt key status : "+STR$(keystate)+" "
- PRINT AT(2,11);" Press any key to find the Key Code"
- PRINT AT(2,12);" Press Escape to Exit"
- IF code=27
- PRINT
- PRINT " Pausing for a second......."
- PAUSE 50
- exit_keycodes!=TRUE
- ENDIF
- ENDIF
- UNTIL exit_keycodes!
- SHOWM
- RETURN
- ' *** ASCII Codes Utility ***
- PROCEDURE ascii
- TITLEW #1," ASCII Character Codes "
- CLEARW #1
- HIDEM
- IF rez%=0
- loop1%=3
- loop2%=64
- ELSE
- loop1%=1
- loop2%=128
- ENDIF
- FOR l%=0 TO loop1%
- j%=0
- k%=2
- FOR i%=0 TO loop2%-1
- i$=STR$(i%+(l%*loop2%))
- i$=SPACE$(3-LEN(i$))+i$
- IF l%=0 AND i%<33
- PRINT AT(k%,(j%+3)*yf%);i$;" ";concodes$(i%)
- ELSE
- PRINT AT(k%,(j%+3)*yf%);i$;" ";CHR$(i%+(l%*loop2%))
- ENDIF
- INC j%
- IF j%>16
- j%=0
- ADD k%,10
- ENDIF
- NEXT i%
- DEFTEXT 1,,,6
- TEXT 20*xf,170*yf%,"Press right button or any key..."
- wait
- CLEARW #1
- NEXT l%
- SHOWM
- RETURN
- ' *** Miscellaneous Subroutines ***
- PROCEDURE rsc_missing
- bell
- ALERT 3,rsrc$+" must be in the|same path as PROGPK10.PRG!",1,"Ok",void%
- RETURN
- PROCEDURE bell
- PRINT AT(1,1);CHR$(7)
- RETURN
- PROCEDURE error
- bell
- IF FATAL
- CLOSE
- alert$="ERROR # "+STR$(ERR)+"| |FATAL Error|"
- ALERT 1,alert$,1," QUIT ",void%
- gone
- END
- ELSE
- CLOSE
- alert$="ERROR # "+STR$(ERR)
- ALERT 1,alert$,1,"Restart|Exit",answer%
- IF answer%=2
- gone
- END
- ENDIF
- ON ERROR GOSUB error
- RESUME restart
- ENDIF
- RETURN
- PROCEDURE wait
- REPEAT
- UNTIL MOUSEK=2 OR INKEY$<>""
- REPEAT
- UNTIL MOUSEK=0 AND INKEY$=""
- RETURN
-